package cn.fl.capital.transform;


import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.capital.dto.CapAdvFundRvtDTO;
import cn.fl.capital.vo.CapAdvFundRvtVO;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 垫款资金流水表 转换器
 * 服务层与展现层转换类
 * 所有的PO只能在持久成和服务层使用
 * 所有的DTO只能在展现层和服务层使用
 * 在服务层中向下是DTO转PO,向上是PO转DTO
 */
public class CapAdvFundRvtVOTransform {


    /**
     * VO 转  DTO
     *
     * @param vo CapAdvFund
     * @return CapAdvFundDTO
     */
    public static CapAdvFundRvtDTO toDTO(CapAdvFundRvtVO vo) {
        CapAdvFundRvtDTO dto = null;
        if (vo != null) {
            dto = new CapAdvFundRvtDTO();
            dto.setId(vo.getId());
            dto.setCode(vo.getCode());//资金编号（x） 垫款（DK+ID）冲销（HB+ID）
            dto.setBatchId(vo.getBatchId());//批次号（流水号）
            dto.setCstId(vo.getCstId());//客户ID
            dto.setCstNm(vo.getCstNm());//客户名称
            dto.setPayAmt(vo.getPayAmt());//金额
            dto.setPayBkId(vo.getPayBkId());//付款银行账户ID(SYS_BK_ACC_INFO表ID、BANK_ACC_INFO表ID)
            dto.setPayAccNo(vo.getPayAccNo());//付款账号
            dto.setPayAccNm(vo.getPayAccNm());//付款账户
            dto.setPayBkNm(vo.getPayBkNm());//付款开户银行
            dto.setPayBkNo(vo.getPayBkNo());//付款银行开户行号
            dto.setDueBkId(vo.getDueBkId());//收款银行账户ID(SYS_BK_ACC_INFO表ID、BANK_ACC_INFO表ID)
            dto.setDueAccNo(vo.getDueAccNo());//收款账户
            dto.setDueAccNm(vo.getDueAccNm());//收款户名
            dto.setDueBkNm(vo.getDueBkNm());//收款开户银行
            dto.setDueBkNo(vo.getDueBkNo());//收款银行开户行号
            dto.setCapAttrCd(vo.getCapAttrCd());//资金属性(CAP0027 ): 1.租赁人还款资金 2.垫款资金 3.回拨资金
            dto.setAdvRetTime(vo.getAdvRetTime());//实际垫款/回拨时间
            dto.setFundStsCd(vo.getFundStsCd());//资金垫款/回拨状态CAP0036： 1.未发送2.已发送 3.付款成功 4.付款失败5.已垫款6.已核销7.已作废
            dto.setRelFundId(vo.getRelFundId());//关联资金ID
            dto.setAdvRuleId(vo.getAdvRuleId());//垫款规则ID
            dto.setFundTypCd(vo.getFundTypCd());//资金生成方式CAP0037：1.自动 2.手动
            dto.setFundRem(vo.getFundRem());//备注
            dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
            dto.setVersion(vo.getVersion());//版本
            dto.setAdvClAmt(vo.getAdvClAmt());//垫款冲销金额
            dto.setPayDt(vo.getPayDt());//应付时间
            dto.setBatchNo(vo.getBatchNo());//批次号
            dto.setPaySchId(vo.getPaySchId());
            dto.setPaySchNo(vo.getPaySchNo());
            dto.setPayPd(vo.getPayPd());
            dto.setRuleNm(vo.getRuleNm());
            dto.setAdvAmt(vo.getAdvAmt());
            dto.setAdvTypCd(vo.getAdvTypCd());
            dto.setPaidUpAmt(vo.getPaidUpAmt());
            dto.setOvdDay(vo.getOvdDay());
            dto.setPayAccTypCd(vo.getPayAccTypCd());
            dto.setDueAccTypCd(vo.getDueAccTypCd());

            dto.setCrtTm(vo.getCrtTm());//创建时间
            dto.setCrtUsrId(vo.getCrtUsrId());//创建人
            dto.setMdfTm(vo.getMdfTm());//修改时间
            dto.setMdfUsrId(vo.getMdfUsrId());//修改人

            dto.setAdvFundId(vo.getAdvFundId());
            dto.setAdvRate(vo.getAdvRate());
            dto.setPenaltyRate(vo.getPenaltyRate());
            dto.setCapUseCost(vo.getCapUseCost());
            dto.setAdvTm(vo.getAdvTm());
        }
        return dto;
    }

    /**
     * DTO 转  VO
     *
     * @param dto CapAdvFundDTO
     * @return CapAdvFundVO
     */
    public static CapAdvFundRvtVO toVO(CapAdvFundRvtDTO dto) {
        CapAdvFundRvtVO vo = null;
        if (dto != null) {
            vo = new CapAdvFundRvtVO();
            vo.setId(dto.getId());
            vo.setCode(dto.getCode());//资金编号（x） 垫款（DK+ID）冲销（HB+ID）
            vo.setBatchId(dto.getBatchId());//批次号（流水号）
            vo.setCstId(dto.getCstId());//客户ID
            vo.setCstNm(dto.getCstNm());//客户名称
            vo.setPayAmt(dto.getPayAmt());//金额
            vo.setPayBkId(dto.getPayBkId());//付款银行账户ID(SYS_BK_ACC_INFO表ID、BANK_ACC_INFO表ID)
            vo.setPayAccNo(dto.getPayAccNo());//付款账号
            vo.setPayAccNm(dto.getPayAccNm());//付款账户
            vo.setPayBkNm(dto.getPayBkNm());//付款开户银行
            vo.setPayBkNo(dto.getPayBkNo());//付款银行开户行号
            vo.setDueBkId(dto.getDueBkId());//收款银行账户ID(SYS_BK_ACC_INFO表ID、BANK_ACC_INFO表ID)
            vo.setDueAccNo(dto.getDueAccNo());//收款账户
            vo.setDueAccNm(dto.getDueAccNm());//收款户名
            vo.setDueBkNm(dto.getDueBkNm());//收款开户银行
            vo.setDueBkNo(dto.getDueBkNo());//收款银行开户行号
            vo.setCapAttrCd(dto.getCapAttrCd());//资金属性(CAP0027 ): 1.租赁人还款资金 2.垫款资金 3.回拨资金
            vo.setAdvRetTime(dto.getAdvRetTime());//实际垫款/回拨时间
            vo.setFundStsCd(dto.getFundStsCd());//资金垫款/回拨状态CAP0036： 1.未发送2.已发送 3.付款成功 4.付款失败5.已垫款6.已核销7.已作废
            vo.setRelFundId(dto.getRelFundId());//关联资金ID
            vo.setAdvRuleId(dto.getAdvRuleId());//垫款规则ID
            vo.setFundTypCd(dto.getFundTypCd());//资金生成方式CAP0037：1.自动 2.手动
            vo.setFundRem(dto.getFundRem());//备注
            vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
            vo.setVersion(dto.getVersion());//版本
            vo.setAdvClAmt(dto.getAdvClAmt());//垫款冲销金额
            vo.setPayDt(dto.getPayDt());//应付时间
            vo.setBatchNo(dto.getBatchNo());//批次号
            vo.setPaySchId(dto.getPaySchId());
            vo.setPaySchNo(dto.getPaySchNo());
            vo.setPayPd(dto.getPayPd());
            vo.setRuleNm(dto.getRuleNm());
            vo.setAdvAmt(dto.getAdvAmt());
            vo.setAdvTypCd(dto.getAdvTypCd());
            vo.setPaidUpAmt(dto.getPaidUpAmt());
            vo.setOvdDay(dto.getOvdDay());
            vo.setPayAccTypCd(dto.getPayAccTypCd());
            vo.setDueAccTypCd(dto.getDueAccTypCd());

            vo.setCrtTm(dto.getCrtTm());//创建时间
            vo.setCrtUsrId(dto.getCrtUsrId());//创建人
            vo.setMdfTm(dto.getMdfTm());//修改时间
            vo.setMdfUsrId(dto.getMdfUsrId());//修改人

            vo.setAdvFundId(dto.getAdvFundId());
            vo.setAdvRate(dto.getAdvRate());
            vo.setPenaltyRate(dto.getPenaltyRate());
            vo.setCapUseCost(dto.getCapUseCost());
            vo.setAdvTm(dto.getAdvTm());
        }
        return vo;
    }

    /**
     * PO集合 转 DTO集合
     *
     * @param list List<CapAdvFundVO>
     * @return List<CapAdvFundDTO>
     */
    public static List<CapAdvFundRvtDTO> toDTOList(List<CapAdvFundRvtVO> list) {
        List<CapAdvFundRvtDTO> dtoList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (CapAdvFundRvtVO vo : list) {
                dtoList.add(toDTO(vo));
            }
        }
        return dtoList;
    }

    /**
     * DTO集合 转 VO集合
     *
     * @param list List<CapAdvFundDTO>
     * @return List<CapAdvFundVO>
     */
    public static List<CapAdvFundRvtVO> toVOList(List<CapAdvFundRvtDTO> list) {
        List<CapAdvFundRvtVO> voList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (CapAdvFundRvtDTO dto : list) {
                voList.add(toVO(dto));
            }
        }
        return voList;
    }
}
